package asteroids.model.programs.Expression;

import asteroids.model.programs.Type;
import be.kuleuven.cs.som.annotate.Basic;

/**
* 
* @version 0.3
* @author  Tandan Sunil, Van Deun Luca
*
*/
public abstract class Expression implements IExpression{

	/**
	 * Initializes a new Expression with the given line and column.
	 * @param line
	 * 			The line in which this expression is situated.
	 * @param column
	 * 			The column in which this expression is situated.
	 * 	 
	 */
	public Expression(int line, int column, Type type){
		this.line= line;
		this.column=column;
		this.type= type;
	}
	private int line;
	/**
	 * Returns the line in which this expression is situated.
	 * 
	 */
	@Basic
	public int getLine() {
		return line;
	}
	/**
	 * Returns the column in which this expression is situated.
	 *
	 */
	@Basic
	public int getColumn() {
		return column;
	}
	private int column;
	private Type type;
	/**
	 * Returns the type of this expression
	 * 
	 */
	@Basic
	public Type getType(){
		return type;
	}
	public abstract boolean canHaveAsExpression(Expression e);
	
}
